package main

/*
*
136. 删除链表的节点
给定单向链表的头指针和一个要删除的节点的值，定义一个函数删除该节点。
返回删除后的链表的头节点
输入: head = [4,5,1,9], val = 5
输出: [4,1,9]
解释: 给定你链表中值为 5 的第二个节点，那么在调用了你的函数之后，该链表应变为 4 -> 1 -> 9.
*/
type ListNode01 struct {
	Val  int
	Next *ListNode01
}

func deleteNode(head *ListNode01, val int) *ListNode01 {

	newHead := &ListNode01{Next: head}
	for cur := newHead; cur.Next != nil; {
		if cur.Next.Val == val {
			cur.Next = cur.Next.Next
		} else {
			cur = cur.Next
		}
	}
	return newHead.Next
}

func main() {

}

func deleteNode1(head *ListNode01, val int) *ListNode01 {

	newList := &ListNode01{Next: head}

	for cur := newList; cur.Next != nil; {
		if cur.Next.Val == val {
			cur.Next = cur.Next.Next
		} else {
			cur = cur.Next
		}
	}
	return newList.Next
}
